/* 
 * File:   Terreno.hpp
 * Author: cesar
 *
 * Definicion de la clase Terreno que permite modelar el suelo del juego.
 */

#ifndef TERRENO_HPP
#define	TERRENO_HPP

#include "ObjetoGrafico.hpp"
#include "glm.hpp"
#define INICIO 0 //signiificado de las posiciones en la matriz Rectangulos.
#define FINAL 1
#define ANCHO_D 2
#define ANCHO_I 3
#define MAX_REC 3

class Terreno : ObjetoGrafico {
public:

    
    
    /**
     * Este metodo es el constructor de la Clase Terreno.
     * 
     * @param nombre_tex : Nombre de la textura a utilizar en el suelo.
     * @param inicio : Coordenada de inicio en Z de el plano de terreno.
     * @param final : Coordenada final en Z de el plano de terreno.
     * @param ancho : Ancho del suelo.
     */
    Terreno(char * nombre_tex, GLfloat inicio, GLfloat final, GLfloat ancho);

    
    
    /**
     * Metodo que permite hacer los calculos del desplazamiento del Terreno
     * para dar la impresion de movimiento.
     * 
     * @param s : El frameskip actual.
     */
    void idle(int s);

    
    /**
     * Este metodo permite dibujar las placas de terreno en la escena.
     */
    virtual void dibujar(); //funcion para dibujar el modelo

private:
    GLfloat Rectangulos[3][4]; //rectangulos que conforman el terreno
    int tope; //tope de visualizacion del terreno
    GLfloat offset; //desplazamiento del plano de terreno
    GLuint textura; //id de la textura del suelo
    int iwidth, iheight; //dimensiones de la textura
    unsigned char* image; //buffer de la imagen
    char * nombre_textura; //nombre de la textura a usar en el suelo




};

#endif	/* TERRENO_HPP */

